package com.example.base_model.dialog

import android.content.Context

/**
 * @Author jiangKunKun
 * @CreateDate 2025/7/23
 * @Description 全局加载（Loading）对话框管理器。
 * 这是一个单例对象，用于在整个应用程序中统一管理加载对话框的显示和隐藏，
 * 确保任何时候只有一个加载对话框实例存在。
 * @SpittingGrooves
 */
object LoadingManager {
    /**
     * 当前显示的加载对话框实例。
     * 使用可空类型来跟踪对话框是否存在。
     */
    private var currentDialog: DefaultLoadingDialog? = null

    /**
     * 显示加载对话框。
     * 如果当前没有对话框正在显示，则会创建一个新的对话框并显示它。
     *
     * @param context 用于创建对话框的上下文。
     * @param message 要在对话框中显示的提示消息。
     */
    fun showLoading(context: Context, message: String) {
        // 避免重复创建和显示对话框
        if (currentDialog == null || currentDialog?.isShowing == false) {
            currentDialog = DefaultLoadingDialog(context).apply {
                setMessage(message)
                show()
            }
        }
    }

    /**
     * 关闭并销毁当前正在显示的加载对话框。
     * 如果对话框正在显示，则会安全地关闭它，并将 `currentDialog` 引用置为 null。
     */
    fun dismissLoading() {
        // 仅当对话框正在显示时才关闭
        currentDialog?.takeIf { it.isShowing }?.dismiss()
        // 清除引用，防止内存泄漏
        currentDialog = null
    }
}
